//package com.taokatao.cardmee.pay.wechat;
//
//import android.app.Activity;
//import android.util.Log;
//
//import com.tencent.mm.sdk.modelpay.PayReq;
//import com.tencent.mm.sdk.openapi.IWXAPI;
//import com.tencent.mm.sdk.openapi.WXAPIFactory;
//
//import org.dom4j.Document;
//import org.dom4j.DocumentHelper;
//import org.dom4j.Element;
//import org.json.JSONObject;
//
//import java.io.UnsupportedEncodingException;
//import java.util.Date;
//import java.util.Iterator;
//import java.util.Random;
//
///**
// * Created by LY on 2016/6/20.
// */
//public class WXPayManager {
//    // 请求签名的key
////    public static final String SIGN_KEY = "201512111453shanghaimingxunKJ001";
//    // APP_ID 替换为您的应用从官方网站申请到的合法appId
////    public static final String APP_ID = "wxd23fdc9394115f79";
////    public static final String WX_MCH_ID = "1262689801";// 微信支付分配的商户号
//
//    // 新
//    public static final String SIGN_KEY = "201512111453shanghaimingxunKJ001";
//    public static final String APP_ID = "wxcb8043d4fce0edba";
//    public static final String WX_MCH_ID = "1351261101";// 微信支付分配的商户号
//
//    /**
//     * 调用WXpay SDK支付
//     */
//    public static void pay(final Activity context, String tradeNo, float price, String orderName, String notifyUrl) {
//        // https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1
//        // 微信支付参数配置见以上链接
//        String appid = APP_ID;
//        String mch_id = WX_MCH_ID;
//        String trade_type = "APP";//APP端支付
//        String nonce_str = Md5Utils.toMd5(String.valueOf(new Random().nextInt(10000)));//随机字符串，不长于32位
//        String out_trade_no = tradeNo;
//        BigDecimal b1 = new BigDecimal(String.valueOf(price));
//        BigDecimal b2 = new BigDecimal("100"); // 总金额 total_fee 是 Int 888 订单总金额，单位为分，详见支付金额
//        int total_fee = b1.multiply(b2).setScale(2, BigDecimal.ROUND_HALF_UP).intValue();
//        String body = orderName;
//        String notify_url = notifyUrl;
//
//        Log.e("WXPayManager", "WXPayManager pay 1 tradeNo:" + tradeNo + " #total_fee:" + price + " #orderName:" + orderName + " #notifyUrl:" + notifyUrl);
//
//        //签名
//        String signA = "appid=" + appid
//                + "&body=" + body
//                + "&mch_id=" + mch_id
//                + "&nonce_str=" + nonce_str
//                + "&notify_url=" + notify_url
//                + "&out_trade_no=" + out_trade_no
//                + "&total_fee=" + total_fee
//                + "&trade_type=" + trade_type
//                + "&key=" + SIGN_KEY;
//
//        String md5sign = Md5Utils.toMd5(signA);
//        Log.d("WXPayManager", "WXPayManager sign : " + md5sign);
//        StringBuffer sb = new StringBuffer();
//        sb.append("<xml>"
//                + "<appid>" + appid + "</appid>"
//                + "<body>" + body + "</body>"
//                + "<mch_id>" + mch_id + "</mch_id>"
//                + "<nonce_str>" + nonce_str + "</nonce_str>"
//                + "<notify_url>" + notify_url + "</notify_url>"
//                + "<out_trade_no>" + out_trade_no + "</out_trade_no>"
//                + "<total_fee>" + total_fee + "</total_fee>"
//                + "<trade_type>" + trade_type + "</trade_type>"
//                + "<sign>" + md5sign + "</sign>"
//                + "</xml>");
//
//        final String sendMessage;
//        try {
//            sendMessage = new String(sb.toString().getBytes(), "ISO8859-1");
//        } catch (UnsupportedEncodingException e) {
//            e.printStackTrace();
//            return;
//        }
//        Log.e("WXPayManager", "WXPayManager pay 2 req:" + sendMessage);
//
//        Runnable payRunnable = new Runnable() {
//            @Override
//            public void run() {
//                try {
//                    final String url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
//                    byte[] result = HttpUtils.httpPost(url, sendMessage);
//                    Log.e("WXPayManager", "WXPayManager pay 3 result has content ?:" + (result != null));
//                    Log.e("WXPayManager", "WXPayManager pay 3 result.length:" + (result != null ? result.length : 0));
//                    if (result != null && result.length > 0) {
//                        JSONObject json = parseXmlToJSONObject(new String(result));
//                        if (json.getString("return_code").equals("SUCCESS") && json.getString("result_code").equals("SUCCESS")) {
//                            PayReq req = new PayReq();
//                            req.appId = json.getString("appid");//调用接口提交的公众账号ID
//                            req.partnerId = json.getString("mch_id");//微信支付分配的商户号
//                            req.prepayId = json.getString("prepay_id");//微信生成的预支付回话标识，用于后续接口调用中使用，该值有效期为2小时
//                            req.nonceStr = json.getString("nonce_str");//微信返回的随机字符串
//                            req.packageValue = "Sign=WXPay";//暂填写固定值Sign=WXPay
//                            Date dateCurrent = new Date();
//                            String currentSecTime = String.valueOf(dateCurrent.getTime() / 1000);
//                            req.timeStamp = currentSecTime;//时间戳-自1970年1月1日 0点0分0秒以来的秒数
//
//                            String sign = "appid=" + json.getString("appid")
//                                    + "&noncestr=" + json.getString("nonce_str")
//                                    + "&package=" + "Sign=WXPay"
//                                    + "&partnerid=" + json.getString("mch_id")
//                                    + "&prepayid=" + json.getString("prepay_id")
//                                    + "&timestamp=" + req.timeStamp
//                                    + "&key=" + SIGN_KEY;
//
//                            req.sign = Md5Utils.toMd5(sign);
//                            Log.e("WXPayManager", "WXPayManager pay 4 req.sign :" + req.sign);
//                            req.extData = "app data"; // optional
//                            // 在支付之前，如果应用没有注册到微信，应该先调用IWXMsg.registerApp将应用注册到微信
//                            Log.e("WXPayManager", "WXPayManager pay 4 to wxapi send req");
//                            IWXAPI iWXApi = WXAPIFactory.createWXAPI(context, APP_ID);
//                            iWXApi.registerApp(APP_ID);
//                            boolean f = iWXApi.sendReq(req);
//                            Log.e("WXPayManager", "WXPayManager pay 5 sendReq result : " + f);
//                        } else {
//                            Log.e("WXPayManager", "WXPayManager pay 4 result return_code NOT SUCCESS retmsg:" + json.getString("retmsg"));
//                        }
//                    } else {
//                        Log.e("WXPayManager", "WXPayManager pay 4 result data[] empty");
//                    }
//                } catch (Exception e) {
//                    Log.e("WXPayManager", "WXPayManager pay 3 error");
//                    e.printStackTrace();
//                }
//            }
//        };
//
//        Thread payThread = new Thread(payRunnable);
//        payThread.start();
//    }
//
//    /**
//     * 将xml字符串转换为JSON对象
//     *
//     * @param strXml xml字符串
//     * @return JSON对象
//     */
//    static JSONObject parseXmlToJSONObject(String strXml) {
//        Log.d("WXPayManager", "WXPayManager parseXmlToJSONObject strXml :" + strXml);
//        JSONObject json = new JSONObject();
//
//        try {
//            if (strXml.length() <= 0 || strXml == null) {
//                return null;
//            }
//            // 将字符串转化为XML文档对象
//            Document document = DocumentHelper.parseText(strXml);
//            // 获得文档的根节点
//            Element root = document.getRootElement();
//            // 遍历根节点下所有子节点
//            Iterator<?> iter = root.elementIterator();
//            while (iter.hasNext()) {
//                Element ele = (Element) iter.next();
//                json.put(ele.getName(), ele.getStringValue());
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return json;
//    }
//}
